﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using AutenticacionFormulario.App_Data;

namespace AutenticacionFormulario
{
    public class Usuario
    {
        AutenticacionDataClassesDataContext dc = new AutenticacionDataClassesDataContext();
        const char SI = 'S';
        internal void AddUsuario(string login, string password)
        {
            USUARIO usuario = new USUARIO();
            usuario.LOGIN = login;
            usuario.PASSWORD = password;            
            dc.USUARIO.InsertOnSubmit(usuario);
            dc.SubmitChanges();
        }

        internal USUARIO FindUsuario(Guid codigoUsuario)
        {
            var usu = from u in dc.USUARIO
                      where u.ID_USUARIO == codigoUsuario 
                      select u;
            if (usu.Count() > 0)
                return usu.First();
            else
                return null;
            
        }

        internal USUARIO FindUsuario(string login, string password)
        {
            var usu = from u in dc.USUARIO
                      where (u.LOGIN == login && u.PASSWORD == password)                      
                      select u;
            if (usu.Count() > 0)
                return usu.First();
            else
                return null;

        }

        internal void AddRole(Guid idUsuario, Guid idRole)
        {
            ROLES_USUARIO rolesUsuario = new ROLES_USUARIO();
            rolesUsuario.ID_ROLE = idRole;
            rolesUsuario.ID_USUARIO = idUsuario;
            dc.ROLES_USUARIO.InsertOnSubmit(rolesUsuario);
            dc.SubmitChanges();
        }

        internal List<ROLE> FindRolesUsuario(Guid? codigoUsuario)
        {
            List<ROLE> listRole = new List<ROLE>();
            var roles = from u in dc.ROLES_USUARIO                      
                      where u.ID_USUARIO == codigoUsuario
                      select u;
            if (roles.Count() > 0)
            {
                IEnumerable<ROLES_USUARIO> rolesUsuario = roles.AsEnumerable<ROLES_USUARIO>();
                foreach (ROLES_USUARIO roleUusario in rolesUsuario)
                {
                    Rol rolADO = new Rol();
                    ROLE rol = rolADO.FindRol(roleUusario.ID_ROLE);
                    if (rol != null)
                    {
                        listRole.Add(rol);
                    }
                }                
            }
            return listRole;

        }


    }
}
